﻿<!DOCTYPE HTML>
<!-- saved from url=(0100)http://172.13.19.31:6060/note_html/工具/Apache-Maven（项目构建）/1003010-pom文件详解-坐标、依赖.html -->
<!DOCTYPE html PUBLIC "" ""><HTML><HEAD><META content="IE=11.0000" 
http-equiv="X-UA-Compatible">
 
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<TITLE>pom文件详解-坐标、依赖</TITLE> <LINK href="pom文件详解-坐标、依赖_files/standalone.css" 
rel="stylesheet"> <LINK href="pom文件详解-坐标、依赖_files/overlay-apple.css" rel="stylesheet"> 
<LINK href="pom文件详解-坐标、依赖_files/article_edit.css" rel="stylesheet"> 
<STYLE type="text/css">
	#content{
		margin: 5px 10px;
	}
</STYLE>
	 <!-- 代码高亮 -->	 <LINK href="pom文件详解-坐标、依赖_files/shCoreEclipse.css" rel="stylesheet">
	 <LINK href="pom文件详解-坐标、依赖_files/my-highlighter.css" rel="stylesheet"> 
<META name="GENERATOR" content="MSHTML 11.00.10586.545"></HEAD> 
<BODY>
<DIV id="content">
<H1 align="center">pom文件详解-坐标、依赖</H1>
<P align="right" 
style="margin: 0px 10px 0px 0px; padding: 0px;">最后修改时间：2015-10-29 16:48:46</P>
<HR style="border-width: 2px; border-color: lime;">

<H3>pom.xml主体</H3>
<PRE class="brush: xml;">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--  maven的根节点及schema --&gt;
 &lt;project xmlns="http://maven.apache.org/POM/4.0.0"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&gt;  

&lt;!-- 坐标代码 --&gt;
&lt;!-- 依赖代码 --&gt;

&lt;project&gt;
</PRE>
<H3>坐标</H3>
<PRE class="brush: xml;">&lt;!--声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变，虽然如此，
    	但它仍然是必不可少的，这是为了当Maven引入了新的特性或者其他模型变更的时候，确保稳定性。--&gt;    
&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;  

&lt;!--项目的全球唯一标识符，通常使用全限定的包名区分该项目和其他项目。
	并且构建时生成的路径也是由此生成， 如com.mycompany.app生成的相对路径为：/com/mycompany/app--&gt;  
&lt;!-- groupId：组id，公司网址的反写+项目名称。
	如下：com.yyoo是公司名称，maven01是项目名称 --&gt;
&lt;groupId&gt;asia.banseon&lt;/groupId&gt;  

&lt;!--构件的标识符，它和group ID一起唯一标识一个构件。换句话说，
	你不能有两个不同的项目拥有同样的artifact ID和groupID；在某个特定的group ID下，
	artifact ID也必须是唯一的。构件是项目产生的或使用的一个东西，Maven为项目产生的构件包括：
	JARs，源码，二进制发布和WARs等。--&gt;  
&lt;!-- artifactId：项目id，实际对应项目的名称-模块名称
	  此名称和mvn package、mvn install 生成后的文件有关系--&gt;
&lt;artifactId&gt;banseon-maven2&lt;/artifactId&gt;  

&lt;!--项目当前版本，格式为:主版本.次版本.增量版本-限定版本号
	SNAPSHOT：快照版本
	alpha：内部测试版本
	beta：公测版本
	release：稳定版本
	GA：正式发布版本
--&gt;  
&lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;  

&lt;!--项目产生的构件类型，默认jar，例如jar、war、ear、pom。
	插件可以创建他们自己的构件类型，所以前面列的不是全部构件类型--&gt;  
&lt;packaging&gt;jar&lt;/packaging&gt;  

&lt;!--项目的名称, Maven产生的文档用--&gt;  
&lt;name&gt;banseon-maven&lt;/name&gt;  

&lt;!--项目主页的URL, Maven产生的文档用--&gt;  
&lt;url&gt;http://www.baidu.com/banseon&lt;/url&gt;  

&lt;!--项目的详细描述, Maven 产生的文档用。  当这个元素能够用HTML格式描述时
	（例如，CDATA中的文本会被解析器忽略，就可以包含HTML标签）， 不鼓励使用纯文本描述。
	如果你需要修改产生的web站点的索引页面，你应该修改你自己的索引页文件，而不是调整这里的文档。
--&gt;  
&lt;description&gt;A maven project to study maven.&lt;/description&gt;
</PRE>
<H3>依赖</H3>
<PRE class="brush: xml;">&lt;!--
该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。
它们自动从项目定义的仓库中下载。要获取更多信息，请看项目依赖机制。
 --&gt;
&lt;dependencies&gt;
	&lt;dependency&gt;
		&lt;!--依赖的group ID --&gt;
		&lt;groupId&gt;org.apache.maven&lt;/groupId&gt;
		
		&lt;!--依赖的artifact ID --&gt;
		&lt;artifactId&gt;maven-artifact&lt;/artifactId&gt;
		
		&lt;!--依赖的版本号。 在Maven 2里, 也可以配置成版本号的范围。 --&gt;
		&lt;version&gt;3.8.1&lt;/version&gt;
		
		&lt;!--依赖类型，默认类型是jar。它通常表示依赖的文件的扩展名，但也有例外。
		一个类型可以被映射成另外一个扩展名或分类器。类型经常和使用的打包方式对应，
		尽管这也有例外。一些类型的例子：jar，war，ejb-client和test-jar。如果设置extensions为 
			true，就可以在plugin里定义新的类型。所以前面的类型的例子不完整。 --&gt;
		&lt;type&gt;jar&lt;/type&gt;
		
		&lt;!--依赖的分类器。分类器可以区分属于同一个POM，但不同构建方式的构件。
		分类器名被附加到文件名的版本号后面。例如，如果你想要构建两个单独的构件成JAR，一个使用Java 
			1.4编译器，另一个使用Java 6编译器，你就可以使用分类器来生成两个单独的JAR构件。 --&gt;
		&lt;classifier&gt;&lt;/classifier&gt;
		
		&lt;!--依赖范围。在项目发布过程中，帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。 
		    - compile ：默认范围，在编译、测试、运行都有效 
		    - provided：类似于编译，但支持你期待jdk或者容器提供，类似于classpath。在编译和测试有效。 
			- runtime: 在执行时需要使用。 在测试和运行时有效。
			- test: 用于test任务时使用。测试时有效。 
			- system: 需要外在提供相应的元素。通过systemPath来取得。与本机系统相关联，可移植性差。 
			- systemPath: 仅用于范围为system。提供相应的路径 
			- import : 导入的范围，只使用在dependencyManagement标签中，表示从其他的pom中导入dependency。
                --&gt;
		&lt;scope&gt;test&lt;/scope&gt;
		
		&lt;!--仅供system范围使用。注意，不鼓励使用这个元素，并且在新的版本中该元素可能被覆盖掉。
		该元素为依赖规定了文件系统上的路径。需要绝对路径而不是相对路径。推荐使用属性匹配绝对路径，
		例如${java.home}。 --&gt;
		&lt;systemPath&gt;&lt;/systemPath&gt;
		
		&lt;!--当计算传递依赖时， 从依赖构件列表里，列出被排除的依赖构件集。即告诉maven你只依赖指定的项目，
		不依赖项目的依赖。此元素主要用于解决版本冲突问题 --&gt;
		&lt;exclusions&gt;
			&lt;exclusion&gt;
				&lt;groupId&gt;org.springframework&lt;/groupId&gt;
				&lt;artifactId&gt;spring-core&lt;/artifactId&gt;
			&lt;/exclusion&gt;
		&lt;/exclusions&gt;
		
		&lt;!--是否是可选依赖,默认false，如果你在项目B中把C依赖声明为可选，你就需要在依赖于B的项目（例如项目A）
		中显式的引用对C的依赖。可选依赖阻断依赖的传递性。 --&gt;
		&lt;optional&gt;true&lt;/optional&gt;
	&lt;/dependency&gt;
&lt;/dependencies&gt;
</PRE>
<H3>依赖管理</H3>
<PRE class="brush: xml;"> &lt;!--
 继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,
 而是当子项目声明一个依赖（必须描述group ID和artifact ID信息），
 如果group ID和artifact ID以外的一些信息没有描述，
 则通过group ID和artifact ID匹配到这里的依赖，并使用这里的依赖信息。 
 --&gt;
&lt;dependencyManagement&gt;
	&lt;dependencies&gt;
		&lt;!--参见dependencies/dependency元素 --&gt;
		&lt;dependency&gt;
			......
		&lt;/dependency&gt;
	&lt;/dependencies&gt;
&lt;/dependencyManagement&gt;
</PRE>
<H3>parent父项目</H3>
<PRE class="brush: xml;">&lt;!--父项目的坐标。如果项目中没有规定某个元素的值，那么父项目中的对应值即为项目的默认值。 坐标包括group ID，artifact ID和 version。--&gt;
&lt;parent&gt;
	&lt;!--被继承的父项目的构件标识符 --&gt;
	&lt;artifactId&gt;&lt;/artifactId&gt;
	&lt;!--被继承的父项目的全球唯一标识符 --&gt;
	&lt;groupId&gt;&lt;/groupId&gt;
	&lt;!--被继承的父项目的版本 --&gt;
	&lt;version&gt;&lt;/version&gt;
	&lt;!--父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom，
               其次在文件系统的这个位置（relativePath位置），然后在本地仓库，最后在远程仓库寻找父项目的pom。 --&gt;
	&lt;relativePath&gt;&lt;/relativePath&gt;
&lt;/parent&gt;

</PRE>
<HR style="border-width: 2px; border-color: lime;">

<DIV align="center">©copyright 版权所有   作者：zzy</DIV>
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shCore.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushJava.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushJScript.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushXml.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushSql.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushBash.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushVb.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/init.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/js/jquery.tools.min.js" type="text/javascript"></SCRIPT>
 <!-- make all links with the 'rel' attribute open overlays --> 
<SCRIPT>
  $(function() {
      $("#apple img[rel]").overlay({effect: 'apple'});
    });
</SCRIPT>
 </DIV></BODY></HTML>
